// 定义模型配置接口
export type ModelConfig =
  | LineModelConfig
  | PlaneModelConfig
  | CubeModelConfig
  | TankBottomModelConfig
  | CylinderModelConfig
  | Cylinder3dModelConfig
  | SphereModelConfig;

// 线定位模型配置
export interface LineModelConfig {
  sensorCount: number;     // 传感器数量
  xRange: number;          // x轴量程(mm)
}

// 平面定位模型配置
export interface PlaneModelConfig {
  xRange: number;          // x轴量程(mm)
  yRange: number;          // y轴量程(mm)
  rows: number;            // 行数
  columns: number;         // 列数
}

// 立方体定位模型配置
export interface CubeModelConfig {
  xRange: number;          // x轴量程(mm)
  yRange: number;          // y轴量程(mm)
  zRange: number;          // z轴量程(mm)
  sensorCount: number;     // 传感器数量
}

// 罐底定位模型配置
export interface TankBottomModelConfig {
  xyRange: number;         // xy量程(mm)
  tankBottomDiameter: number; // 罐底直径(mm)
  sensorCount: number;     // 传感器数量
}

// 柱面定位模型配置
export interface CylinderModelConfig {
  cylinderDiameter: number; // 柱体直径(mm)
  cylinderLength: number;   // 柱体长度(mm)
  rows: number;            // 行数
  sensorsPerRow: number;   // 每行数量
  headType: 'none' | 'top' | 'bottom' | 'both'; // 封头类型
  headHeight: number;      // 封头高度(mm)
}

// 柱体定位模型配置
export interface Cylinder3dModelConfig {
  diameter: number;        // 直径(mm)
  cylinderLength: number;  // 柱体长度(mm)
  rows: number;            // 行数
  sensorsPerRow: number;   // 每行数量
}

// 球面定位模型配置
export interface SphereModelConfig {
  radius: number;          // 半径(mm)
  volume: number;          // 体积(m3)
  sensorRows: number;      // 传感器行数
}

// 传感器设置接口
export interface SensorSetting {
  deviceNo: string;        // 设备编号
  x: number;               // x坐标
  y: number;               // y坐标
  z: number;               // z坐标
  arcLength: number;       // 弧长
  longitude: number;       // 经度
  latitude: number;        // 纬度
  enabled: boolean;        // 是否启用
  isGuard: boolean;        // 是否为警戒传感器
}

// 定义配置项类型
export interface LocateSetConfig {
  enable: boolean;          // 是否启用定位设置
  soundSpeed: number;       // 声速(m/s)
  amplitudeTolerance: number; // 幅度容差(dB)
  minSensorCount: number;   // 最小传感器数
  maxSensorCount: number;   // 最大传感器数
  eventDefineTime: number;  // 事件定义时间HDT(us)
  eventLockTime: number;    // 事件闭锁时间HLT(us)
  eventImpactDistance: number; // 事件撞击间距(us)
  locateModel: string;      // 定位模型
  modelConfig: ModelConfig; // 模型配置参数
}

// 完整的定位设置配置接口
export interface LocateSetData {
  config: LocateSetConfig;    // 定位配置
  sensorSettings: SensorSetting[]; // 传感器设置列表
}

export const LocateModelLine = "line"
export const LocateModelPlane = "plane"
export const LocateModelCube = "cube"
export const LocateModelTankBottom = "tankBottom"
export const LocateModelCylinderFace= "cylinderFace"
export const LocateModelCylinderBody= "cylinderBody"
export const LocateModelSphereFace= "sphereFace"
// 定位模型选项
export function getLocateModelOptions(){
  return [
    { label: '线定位', val: LocateModelLine },
    { label: '平面定位', val: LocateModelPlane},
    { label: '立方体定位', val: LocateModelCube },
    { label: '罐底定位', val: LocateModelTankBottom },
    { label: '柱面定位', val:LocateModelCylinderFace},
    { label: '柱体定位', val: LocateModelCylinderBody },
    { label: '球面定位', val: LocateModelSphereFace }
  ];
}
